在 Mangrove 上发布拓展:以 pg_hello_world 为例
经典的 “Hello world” 程序在程序界中广受赞誉,在本篇文章中,我们将以此为案例阐述在 Mangrove
上发布拓展的方法。
(pg_hello_world 拓展提供了一个名为 pg_hello_world 的函数,执行这个函数可以得到经典的 Hello world
)
打开 Mangrove-Index 索引管理仓库页面
Mangrove 程序依赖 Mangrove-Index 仓库展开拓展下载的工作,因此想要发布拓展的话,打开这个页面应当是工作开始的第一步。
Fork Mangrove-Index 索引管理仓库
在仓库页面上找到 fork
按钮,创建一个属于你的 Mangrove 索引管理仓库(出于安全因素考虑,我们希望社区的参与者先将拓展信息发布于自己的索引管理仓库,再将其以 PR 的形式合并于社区仓库)。
(这需要你拥有一个开放原子基金会的账户)
将 Fork 的仓库 clone 到本地
点击右面的下载按钮,复制 git 仓库的网址,在 shell 命令行中使用 git 工具执行 clone 操作。
打开 extension 文件夹
在下载以后的 Mangrove-Index 文件夹找到 extension
文件夹,打开它:
文件夹内是其他用户所上传或维护中的拓展索引信息,在这里,你需要建立一个新的文件夹,用以描述你的拓展。
在 extension 文件夹中存储你希望发布的拓展
以 pg_hello_world
拓展的发布为案例,在 extension
文件夹中,建立一个名为 pg_hello_world
的文件夹。
Mangrove-Index 索引由下面四个文件组成:
- pre_install.sh ... 安装拓展前,希望执行的脚本文件
- install.sh ... 安装拓展所需要执行的脚本文件
- after_install.sh ... 安装拓展后所需要执行的脚本文件
- describle.json ... 用于描述拓展的 json 文件
Mangrove 程序将会按照 pre -> install -> after 的顺序执行脚本文件(如果没有实际需要,可以不编写对应脚本并且留空),同时将会按照 describle.json 中的内容向用户阐述拓展的有关信息。
如在本案例中的 pg_hello_world
拓展中,我们可以仅编写 install.sh
与 describle.json
文件,内容如下所示:
# install.sh
make install
{
"introduce" : "PostgreSQL Hello world 拓展程序",
"repo" : "https://atomgit.com/wenyi/pg_hello_world.git",
"requirements_software_tips" : [],
"support_postgresql_tips": ["PostgreSQL 9+"],
"support_system_tips": ["Linux"]
}
完成这些事项以后,在本地的 git 仓库中登记这一贡献过程,并将其推送到 AtomGit 中的存储仓库中
# 以 pg_hello_world 为例
git add .
git commit -m "贡献 pg_hello_world"
git push
向 Mangrove 社区仓库提交 PR
现在,打开你所 Fork 的 Mangrove-Index 仓库页面,找到 变更请求
页面部分,单击新建 变更请求
按钮:
在完成提交以后,即需等待社区的审批与响应(一般而言,只要不存在对于社区索引仓库的破坏行为,审核就会通过)。
(审核完成以后,社区的仓库信息将会更新)
通过 Mangrove 程序验证发布结果
Mangrove 程序提供了 -s
指令帮助我们验证拓展索引的发布成功与否,如在这里,可以执行如下指令:
python -m mangrove pg_hello_world
(可以发现,目前的社区仓库已经可以搜索到我们的 pg_hello_world 拓展了)
(使用 -i 指令的话,我们可以安装部署 pg_hello_world 程序)
(在完成安装以后,需要我们手动执行 CREARE EXTENSION
在 PostgreSQL 中进行注册,并验证是否成功运行)